package game;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BancoRecordes 
{
	
	private static BancoRecordes instance;
	public String nomeArquivo = "arquivo.txt";
	
	public static BancoRecordes getInstance()
	{
		if(instance == null)
			instance = new BancoRecordes();
		
		return instance;
		
	}
	
	public String[] CarregarPontuacao()
	{
		File arquivo = new File( this.nomeArquivo );
		
		if(arquivo.exists())
			return LerPontuacao(arquivo);
		else
			return CriarArquivoZerado(arquivo);
		
	}
	
	public String[] CriarArquivoZerado(File arquivo)
	{
		try {
			arquivo.createNewFile();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		FileWriter fw;
		
		try {
			fw = new FileWriter( arquivo );
			BufferedWriter bw = new BufferedWriter( fw );
			
			for (int i = 0; i < 5; i++) 
			{
				bw.write( 100 - (i*10) + "" );
				bw.newLine();
				bw.write( "TLOS" );
				bw.newLine();
			}
			
			
			bw.close();
			fw.close();
			
		} catch (IOException e) 
		{
			e.printStackTrace();
		}
		
		return CarregarPontuacao();
	}
	
	public String[] LerPontuacao(File arquivo)
	{
		String[] txt = new String[10];
		FileReader fr = null;
		
		
		try {
			fr = new FileReader( arquivo );
			
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
		
		BufferedReader br = new BufferedReader( fr );
		
		
		
		
		try {
			
			int c = 0;
			while( br.ready() )
			{
				txt[c] = br.readLine();
				c++;
			}
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	
		try {
			br.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
			fr.close();
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		return txt;
	}
	
	public void SalvarPontuacao(String nick, int ponto)
	{
		String[] nomes = new String[5];
		String[] pontos = new String[5];
		
		String[] txt = CarregarPontuacao();
		
		//aqui separa os nomes dos pontos
		for (int i = 0; i < txt.length; i++) 
		{
			if(i%2 == 1)// e impar
			{
				nomes[i/2] = txt[i];
			}
			else// e par
			{
				pontos[(i - i%2)/2] = txt[i];
				
			}
		}
		//end
		
		
		//aqui ele poe na ordem de pontuacao
		for (int i = 0; i < 5; i++) 
		{
			int p = (int)Integer.parseInt(pontos[i]);
			String nom = nomes[i];
			
			if(p < ponto)
			{
				pontos[i] = String.valueOf(ponto);
				nomes[i] = nick;
				ponto = p;
				nick = nom;
			}
		}
		//end
		
		
		//aqui ele passa os dados da lista separada pra uma unica lista
		for (int i = 0; i < 10; i++) 
		{
			if(i%2 == 1)// e impar
			{
				txt[i] = nomes[i/2];
			}
			else// e par
			{
				txt[i] = pontos[(i - i%2)/2];
			}
		}
		//end
		
		
		
		File arquivo = new File(nomeArquivo);
		
		try {
			arquivo.createNewFile();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		FileWriter fw;
		
		try {
			fw = new FileWriter( arquivo );
			BufferedWriter bw = new BufferedWriter( fw );
			
			for (int i = 0; i < 10; i++) 
			{
				bw.write(txt[i] );
				bw.newLine();
			}
			
			
			bw.close();
			fw.close();
			
		} catch (IOException e) 
		{
			e.printStackTrace();
		}
		
		
	}
	
	public int MenorRecorde()
	{
		return Integer.parseInt(CarregarPontuacao()[8]);
	}
	
}
